package com.flot.yazb.base.rxjava;

import com.flot.yazb.base.host.HostAnoy;
import com.flot.yazb.base.host.HostApi;
import com.flot.yazb.aop.stub.RMResponse;
import com.flot.yazb.model.user.UserModel;
import com.flot.yazb.model.user.LoginParmsModel;

import retrofit2.Callback;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * Created by fengdongfei on 2017/8/22.
 */

public interface RBService {

    /**
     * 传统retrofit定义接口方式
     * @param userId
     * @param callback
     */
    @GET("/user")
    public void getCallUser(@Query("userId") String userId, Callback<Student> callback);


    @GET("/token")
    public Observable<String> getToken();

    /**
     * rxjava方式定义接口
     * @param userId
     * @return
     */
    @GET("/user")
    public Observable<Student> getUser(@Query("userId") String userId);


    @HostAnoy.NameSpace(HostApi.TYAZBHOST)
    interface UserService{
        @POST("/pad/security/login")
        Observable<RMResponse<UserModel>> login(@Body LoginParmsModel model);
    }


//    @GET("{url}")
//    Observable<ResponseBody> executeGet(
//            @Path("url") String url,
//            @QueryMap Map<String, String> maps);
//
//
//    @POST("{url}")
//    Observable<ResponseBody> executePost(
//            @Path("url") String url,
//            @QueryMap Map<String, String> maps);
//
//    @POST("{url}")
//    Observable<ResponseBody> executeCachePost(
//            @Path("url") String url,
//            @QueryMap Map<String, String> maps);
//
//    @POST("{url}")
//    Observable<ResponseBody> uploadFiles(
//            @Path("url") String url,
//            @Path("headers") Map<String, String> headers,
//            @Part("filename") String description,
//            @PartMap()  Map<String, RequestBody> maps);
//
//    @Streaming
//    @GET
//    Observable<ResponseBody> downloadFile(@Url String fileUrl);
}
